# 三、编程题
# 1.自定义函数,求两个数的最大值。
# def max(numberOne,numberTow):
#     if numberOne>numberTow:
#         return numberOne
#     else:
#         return numberTow
# print('最大值为：',max(1090,7867))
# 最大值为： 7867
#
# 2.自定义 lambda 函数,求两个数的最小值
# minNumbe = lambda x,y: x if x < y else y
# print('最小值为:',minNumbe(100,99))
# print('最小值为:',minNumbe(1023,894))
# 最小值为: 99
# 最小值为: 894
#
# 3.编程实现:输出当前的系统时间。
# def systemTime():
#     from datetime import datetime
#     now = datetime.now()
#     print('当前时间是:',now)
# systemTime()
# 当前时间是: 2024-05-15 10:45:10.216038
#
# 4.自定义函数,判断传入的字符参数是否为“回文”
# def huiwen(str):
#     str = list(str)
#     restr = list(reversed(str))
#     return str == restr
# if huiwen('aasdffdsaa'):
#     print('回文')
# else:
#     print('不是回文')
#
# 5.自定义函数,计算n的阶乘(非递归)
# def jieChen(n):
#     last = 1
#     for i in range(1,n+1):
#         last *= i
#     return last
# print(jieChen(10))
# 3628800
#
# 6.自定义函数,计算n的阶乘(递归)。
# n = int(input('input'))
# def jiec(n):
#     if n == 0:
#         return 1
#     else:
#         return n * jiec(n - 1)
# print(jiec(n))
#
# input8
# 40320
#
# 7.自定义函数,计算 1~n的累加和。
# n = int(input('input'))
# def leij(n):
#     if n == 0:
#         return 0
#     else:
#         return n + leij(n - 1)
# print(leij(n))
#
# input4
# 10
#
# 8.自定义函数,计算任意给定数的累加和(提示:使用不定长参数)
# n = map(int,list(input('input:')))
# def leij(*n):
#     return sum(*n)
# print(leij(n))
#
# input:555
# 15
#
# 9.编写函数,判断一个数字是否为素数,是则返回字符串YES,否则返回字符串NO,并用数字29与12进行验证。
# import math
# def price(i):
#     if i < 2:
#         return 'NO'
#     else:
#         for j in range(2, int(math.sqrt(i)) + 1):
#             if i % j == 0:
#                 return 'NO'
#         return 'YES'
#
# num = int(input("请输入一个数："))
# print(price(num))
#
# 请输入一个数：29
# YES
#
# 请输入一个数：12
# NO
#
# 10.编写程序,实现将列表ls中的素数删除并输出删除素数后列表的元素个数,s[23,45,78,87,11,67,89,13,243,56,67,311,431,111,1417]。
# import math
# def price(i):
#     if i < 2:
#         return False
#     else:
#         for j in range(2, int(math.sqrt(i)) + 1):
#             if i % j == 0:
#                 return False
#         return True
# s=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,1417]
# new=[]
# for i in s:
#     if price(i)==False:
#         new.append(i)
# print('非素数有',list(new),'个数：',len(new))
# s.clear()
#
# 非素数有 [45, 78, 87, 243, 56, 111, 1417] 个数： 7
#
# 11.编程实现:计算两个日期之间的天数,输入日期的格式为 2020/12/1.
# import datetime as d
# time1 = input('input t1:')
# format1 = "%Y/%m/%d"
# t1=d.datetime.strptime(time1,format1)
# time2 = input('input t2:')
# format2 = "%Y/%m/%d"
# t2=d.datetime.strptime(time2,format1)
# print(t2.date().year-t1.date().year)
#
# input t1:2023/3/4
# input t2:2043/7/8
# 20
#
# 12.编程实现:获取系统日期,并计算该日期是所在年份的第几天
# import datetime as d
# print(d.datetime.now(),'是一年中的第',d.datetime.now().timetuple().tm_yday,'天。')
# 2024-05-22 11:08:24.012108 是一年中的第 143 天。
# timetupe是datatime对象中的方法，调用timetupe返回struct_time对象。
#
# 13.自定义函数,实现输入一行字符,分别统计其中英文字母、空格、数字和其他字符
# 的个数。
# def count_chars(input_string):
#     # 初始化计数器
#     letters = 0
#     spaces = 0
#     digits = 0
#     others = 0
#
#     # 遍历字符串中的每个字符
#     for char in input_string:
#         # 检查字符是否是英文字母
#         if char.isalpha():
#             letters += 1
#             # 检查字符是否是空格
#         elif char.isspace():
#             spaces += 1
#             # 检查字符是否是数字
#         elif char.isdigit():
#             digits += 1
#             # 如果都不是，则属于其他字符
#         else:
#             others += 1
#     return letters, spaces, digits, others
# input_line = input("请输入一行字符：")
# letters, spaces, digits, others = count_chars(input_line)
# print(f"英文字母个数：{letters}")
# print(f"空格个数：{spaces}")
# print(f"数字个数：{digits}")
# print(f"其他字符个数：{others}")
#
# 14.自定义函数,求m和n的最大公约数。
# def gcd(m, n):
#     gcd_value = 0
#     for i in range(1, min(m, n) + 1):
#         if m % i == 0 and n % i == 0:
#             gcd_value = i
#     return gcd_value
# print(gcd(48, 18))
# 15.编程实现:以 123 为随机数种子,随机生成10个1~999(含 999)的随机数,以逗号分隔并输出。
# import random
# random.seed(123)
# random_list = [random.randint(1,999) for _ in range(10)]
# print(random_list)
#
# [54, 275, 90, 788, 418, 273, 111, 859, 923, 896]
#
# 16.用递归方式求解 1~100 的累加和。
# def leij(n):
#     if n == 0:
#         return 0
#     else:
#         return n + leij(n - 1)
# print(leij(100))
#
# 5050
#
# 17.求1!+2!+3!十…+n!,要求在文件.py中定义求阶乘的函数,在文件么购中求阶乘的累加和,求阶乘时需调用 f1.py 中的函数
# import sys
# sys.path.insert()
# import f1
# n = int(input('input'))
# print(f1.jiec(n))
